﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FinanSoft.BusinessLayer;
using FinanSoft.Utilities;
using System.Xml;


namespace FinanSoft
{
    public partial class frmAbrirComp : Form
    {
        bool mostrarSplash; //true si, false no
        frmPrincipal frmPadre; //Para cerrar el padre sin salir del programa se utiliza al cerrar compañia

        public frmAbrirComp(bool mostrarSplash_)
        {
            mostrarSplash = mostrarSplash_;
            InitializeComponent();
            leerDatosXML();
           // companyBox.Items.Add(ReportManager.GetInstance().LoadedCompany.Name);
        }

        public frmAbrirComp(bool mostrarSplash_, frmPrincipal frmPadre_)
        {
            mostrarSplash = mostrarSplash_;
            frmPadre = frmPadre_;
            InitializeComponent();
            leerDatosXML();
          //  companyBox.Items.Add(ReportManager.GetInstance().LoadedCompany.Name);
        }

        //Funcion que me lee las compañías del Xml
        private void leerDatosXML()
        {
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(Constants.DIRECTORY_COMPANIES);

            XmlNodeList Empresas = xDoc.GetElementsByTagName(Constants.TAG_COMPANIES);
            XmlNodeList compañia = ((XmlElement)Empresas[0]).GetElementsByTagName(Constants.TAG_COMPANY);
            foreach (XmlNode nodo in compañia) 
            {
                companyBox.Items.Add(nodo.Attributes.GetNamedItem(Constants.TAG_COMPANY_NAME).InnerText);
                
            }
        }

        // Funcion que me crea un archivo con la compañía seleccionada
        private void crearArchivoXML(String seleccionado) 
        {
            String BaseDatos = "";
            //Leer primero cual compañia se seleccionó para sacar la base de datos
            XmlDocument xDoc = new XmlDocument();
            xDoc.Load(Constants.DIRECTORY_COMPANIES);

            XmlNodeList Empresas = xDoc.GetElementsByTagName(Constants.TAG_COMPANIES);
            XmlNodeList compañia = ((XmlElement)Empresas[0]).GetElementsByTagName(Constants.TAG_COMPANY);
            foreach (XmlNode nodo in compañia)
            {
                if (nodo.Attributes.GetNamedItem(Constants.TAG_COMPANY_NAME).InnerText.Equals(seleccionado))
                    BaseDatos = nodo.Attributes.GetNamedItem(Constants.TAG_COMPANY_DATA_BASE).InnerText;
            }

            AppConfigReader.GetInstance().DataBaseName = BaseDatos;
        }




        //BtmAbricCompañia
        private void btnAbrirComp_Click(object sender, EventArgs e)
        {
            
            if (companyBox.SelectedIndex >= 0)
            {
                crearArchivoXML(companyBox.SelectedItem.ToString());
                // Cargamos y mostramos el formulario Login
                frmLogin frmLoginV = new frmLogin(this);
                frmLoginV.ShowDialog(this);     // Mostramos el formulario de forma modal.
                //frmLoginV.Dispose();
            }
            else
                MessageBox.Show(MessageConstants.NO_SELECTED_COMPANY, MessageConstants.TITLE, MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void frmAbrirComp_Load(object sender, EventArgs e)
        {
            if (mostrarSplash)
            {
                // Cargamos y mostramos el formulario Splash
                frmSplash f1 = new frmSplash();
                f1.ShowDialog(this);     // Mostramos el formulario de forma modal.
                f1.Dispose();
            }
            else
            {
                //Cerramos el padre
                frmPadre.Close();
            }
        }

        private void companyBox_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}
